package com.itkang.tenplate;

/**
 * <p>
 * 场景:咖啡因父类
 * </p>
 *
 * @author york yuan
 * @version 1.0
 * @since 15/7/9上午10:11
 */
public abstract class CaffeinBeverage {

    /**
     * 模板方法,把其中可以抽取的置为抽象方法,让子类必须继承
     * 把公用的放在父级中,子类不用继承
     */
    final void prepareRecipe() {
        //烧水
        boliWater();
        //冲泡
        brew();
        //装杯
        pourInCup();
        //添加调料
        addCondiments();
    }

    /**
     * 冲泡方法
     */
    abstract void brew();

    /**
     * 添加调料
     */
    abstract void addCondiments();

    /**
     * 烧水
     */
    void boliWater() {
        System.out.println("Boiling water");
    }

    /**
     * 倒进杯子
     */
    void pourInCup() {
        System.out.println("Pouring into cup");
    }


}
